查看原文
其他

Java基础篇——Java开发面试题7期

素文宅博客 Java精选 2022-08-09

Java面试前需要做足各方面的准备工作,肯定都会浏览大量的面试题,本人也不例外,通过浏览面试题和以往的面试经历,总结了从初级到中级以及高级的面试题,供大家学习讨论。

final有哪三种用法?每种用法是什么含义?

点击下方空白区域查看答案解析!

1)当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变。


2)将方法声明为final,那就说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。


3)当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。

什么是抽象类,抽象类的方法是否可同时是static,是否可同时是native,是否可同时是synchronized?

点击下方空白区域查看答案解析!

声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。


抽象方法不可被上述三个中的任意一个修饰,抽象方法只能被public或protected修饰,其他修饰符皆不可以。抽象类的一般就是没有什么具体的实现,主要是让子类来帮助他实现。如果在再abstract之前加static,native,synchronized这些修饰符没有任何意义。

Java中的抽象类有没有对象?

点击下方空白区域查看答案解析!

抽象类可以声明对象,但是不能使用自身的构造方法创建对象,但是可以使用子类的构造方法进行创建。 


public abstract class A{}     

public class B extends A{}     

A a = new B();    

请谈谈进程和线程有什么区别?

点击下方空白区域查看答案解析!

进程一般是对操作系统而言的。例如,你打开word编辑文档,同时打开outlook收取邮件。我们可以说这时系统内有两个进程在运行。即多个程序几乎在同一时间执行多个任务。


线程一般是对某一程序而言的。如上例,你打开outlook收新邮件的同时,还可以看已下载的邮件,这两件事没有相互干扰,那么我们说此时这一程序中至少有两个线程在运行。即每一个程序在同一时间内执行多个任务。

form中get和post的主要有什么区别?

点击下方空白区域查看答案解析!

Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下:


1)Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。


2)Get将表单中数据的按照variable=value的形式,添加到action所指向的URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单 中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。


3)Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。


4)Get传输的数据量小,这主要是因为受URL长度限制;而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。


5)Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。


6)Get是Form的默认方法。

简述MVC的有什么优缺点?

点击下方空白区域查看答案解析!

优点:

开发效率高。

松耦合,程序灵活性和扩展性好。

代码重用度更高。

易于人员分工。


缺点:

代码复杂度增加。

代码数量增加。

不适合开发小型项目。

简述MVC三个层次的作用?

点击下方空白区域查看答案解析!

1)视图(View):代表用户交互界面,一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理。


2)模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计是MVC最主要的核心部分。业务模型包含一个很重要的模型——数据模型。数据模型主要指实体对象的数据保存(持久化),所有有关数据库的操作只限制在该模型中。


3)控制(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。控制层并不做任何的数据处理。

EL表达式的隐含对象及其作用(至少说出4个)?

点击下方空白区域查看答案解析!

applicationScope

应用程序范围内的scoped变量组成的集合

cookie

所有cookie组成的集合


header

HTTP请求头部,字符串


headerValues

HTTP请求头部,字符串集合


initParam

全部应用程序参数名组成的集合


pageContext

当前页面的javax.servlet.jsp.PageContext对象


pageScope

页面范围内所有对象的集合


param

所有请求参数字符串组成的集合


paramValues

所有作为字符串集合的请求参数


requestScope

所有请求范围的对象的集合


sessionScope

所有会话范围的对象的集合 

推荐阅读

 

Java基础篇——Java开发面试题6期

Java基础篇——Java开发面试题5期

Java基础篇——Java开发面试题4期

Java基础篇——Java开发面试题3期

Java基础篇——Java开发面试题2期

Java基础篇——Java开发面试题1期

Spring基础篇——DI/IOC和AOP原理初识

微框架Spring Boot使用Redis如何实现Session共享

SpringMvc框架MockMvc单元测试注解及其原理分析


更多推荐↓↓↓
 

Java精选

关注微信公众号“Java精选”(w_z90110),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存